颜子杰, 陈楷文 | NVIDIA GPU加速计算专家团队 | Nov 07, 2025
该报告概述了 Megatron Core (MCore) 中混合专家模型 (MoE) 的更新,重点介绍了在 NVIDIA Hopper 和 Blackwell 架构上实现的 DeepSeek-V3 SOTA 训练性能。
核心性能指标:
下图展示了 MCore DeepSeek-V3 在不同硬件平台上的性能演进历史,从2025年初的170 TFLOPS逐步提升至2025年9月的970 TFLOPS。
实现这些性能的关键优化技术包括:
- 并行化 (Parallelism): 精细折叠 (Fine-grained Folding)
- 内存 (Memory): 精细重计算 (Fine-grained Recomputations)、内存高效置换 (Mem-Efficient Permutation)
- 通信 (Communication): DeepEP, HybridEP, 1F1B A2A 重叠
- CPU 开销 (CPU Overhead): 算子融合 (Fusions), cudaGraph
- FP8 (MXFP8/DeepSeek Recipe): 应用 FP8 精度进行训练
- 长上下文 (Long Context): 扩展至 512K 上下文长度
为了支持新兴架构并实现最佳性能,MCore MoE 的开发在一个专用的开发分支上进行,其特点如下:
- 快速迭代与审查 (FAST ITERATION & REVIEW)
- SOTA MoE 特性 (SOTA MOE FEATURES)
- 全测试覆盖 (FULL TEST COVERAGE)
- 与主分支定期同步 (PERIODIC SYNC WITH MAIN)
- GitHub-First 开发模式 (GITHUB-FIRST DEVELOPMENT)
- 对社区贡献开放 (OPEN FOR CONTRIBUTIONS)
开发分支地址:https://github.com/NVIDIA/Megatron-LM/tree/dev
该开发分支已经合并了多项前沿功能:
- Qwen3-Next 和 GDN (Gated Delta Net) 支持 (已合并)
- 流水线并行下的激活卸载 (Activation Offloading) (已合并)
- Muon 和逐层分布 (layer-wise distribution) (已合并)
- 针对 NVL72 的 HybridEP (已合并)
- FSDP + EP 支持 (已合并)
- 重构和优化 MoE 的 cuda_graph_scope (已合并)
- MuonClip 支持
- 开发分支的混合上下文并行 (Hybrid-ContextParallel) 特性
- 融合的线性层和交叉熵 (Fused Linear and Cross Entropy) 操作
以下是 MCore MoE 正在进行和未来的工作规划,涵盖模型支持、核心功能、并行化、优化、精度支持、通信和开发者体验等多个方面。
性能与内存增强
- [ ] 支持将 MTP 层放入独立的流水线阶段
- [ ] 融合线性和交叉熵操作
高级功能
- [ ] 增强 cuda_graph_scope 以支持 MoE 和 Mamba
- 更细粒度的图范围,如 MoE 路由器和调度预处理
- 微创式实现
通信优化
- [ ] HybridEP MNNVL 优化
- [ ] HybridEP for NVL8+IB
Bug 修复
- [x] 修复 DeepSeek 和 Qwen HF tokenizer 的兼容性问题
持续进行的长期特性
- 针对 DeepSeek-V3, Qwen-3 等 fine-grained MoE 的端到端性能优化
- 无同步和全迭代 cudaGraph MoE 训练
- 设备发起的 HybridEP 和 GroupedGEMM
- MoE ECHO Dispatcher
- 针对 Blackwell 性能的 CPU 开销优化
- MLA CP 2.0 - 增强 MLA CP 以支持更长的序列训练
- 动态上下文并行以支持不平衡的长序列训练
- 探索 CPU 卸载 - Hybrid CPU-GPU expert routing
- Megatron FSDP MoE 训练的性能优化
下表展示了在 Hopper 架构上,通过逐步应用各项优化技术,DeepSeek-V3 的性能提升过程。基线性能为 147 TFLOPS,最终通过 MTP Standalone 优化达到了 359 TFLOPS。
下表详细列出了在 Blackwell 架构上,从基线 494.46 TFLOPS 到最终 970.01 TFLOPS 的各项优化特性及其带来的性能增益。关键优化包括 CUDA Graphs、HybridEP 和 Fuse quantization to normalization 等。
下表展示了在 Hopper 平台上进行长上下文训练的性能数据,涵盖了不同 GPU 数量、序列长度和并行策略下的 TFLOPS 表现。
cudaGraph MoE 训练HybridEP 和 GroupedGEMMECHO DispatchercudaGraphHybridEPcudaGraph 支持这是一个针对目标版本 v0.10 的技术。
- 核心思想: 解耦 MoE 层与 Attention 层的并行映射。允许在 Attention 和 MoE 层中使用不同的并行策略。
- 概念来源: MoE 并行折叠和 DLsim 中的异构并行 (Heterogeneous (UVXY) Parallelism) 本质上是相同的。我们默认将 MoE 中的 TPxEPxDP 从 Dense 和 TPxEPxDP 中折叠出来,并且没有为 CEP/TCP/TEP/CEP 提供显式设置。
- 接口设计:
- Attention 层使用传统的 TP/CP/DP。
- MoE 层可以指定任意的 TP/EP/DP。
用例:
TP8CP8DP1MoE: 可以使用任意并行映射,例如:
TP1EP64DP1 (之前的扩展 EP)TP64EP1DP1 (之前的扩展 TP)TP2EP16DP2EP8TP8DP1 (带重排序)之前的扩展 TP 和扩展 EP 只是 EP 折叠的两种特例。
细粒度重计算 (Fine-Grained Recomputing):
"mla_up_proj" + "layernorm" + "moe_act" 的重计算策略。内存高效置换 (Memory-Efficient Permutation):
我们还使用 TP2 进一步减少内存使用。
PP>1 & VPP>1。与最新的优化和模型结构兼容:
MXFP8/NVFP4CUDA Graph (尚不能捕获卸载的模块)
下图展示了在 Grace-Blackwell Trays 上运行 DeepSeek-V3 的性能,通过卸载 moe_act,吞吐量基本保持不变,但最大内存占用显著降低。
Kernel Fusions:
MLA RoPE Fusion (用于前向和后向传播)
我们还有其他融合,如置换融合 (permute fusion) 和路由融合 (router fusion),与 Shopee 合作开发,但未包含在此次消融实验中。
下图展示了 MLA RoPE 融合前后的性能对比,以及融合操作对整体性能的提升。
DeepEP的优势包括:
在使用Alltoall Dispatcher时,EP通信大约占据了50%的单步时间。DeepEP可以将EP通信时间大致减半。
下图展示了Alltoall Dispatcher和采用DeepEP的Flex Dispatcher的执行时间线对比,后者显著减少了通信(蓝色/紫色部分)的耗时。
性能数据
| Step Time (s) | Per GPU TFLOPs | |
|---|---|---|
| DeepEP | 32.7 | 261 (+54) |
性能数据
| Step Time (s) | Per GPU TFLOPs | |
|---|---|---|
| FP8 | 30.8 | 276 |
pipeline_model_parallel_layout 是一个用于定义流水线并行分区的灵活API,这对于非均衡模型的负载均衡至关重要。例如,对于DeepSeek-V3(61个解码器层 + 1个MTP层),我们可以通过设置 PP8VPP4 将其分区,具体命令如下:
--pipeline-model-parallel-layout="Et|(tt)*30|mL"
下图展示了如何将模型层(Embedding, Decoder, Loss)映射到不同的流水线阶段(Stage)以及不同的虚拟流水线并行(VPP)和物理流水线并行(PP)排名上,以实现负载均衡。
通过交叉执行不同微批次(micro-batch)的前向和后向计算,可以有效地将All-to-All通信操作与计算过程重叠,从而隐藏通信延迟。
下图的时间线展示了计算与通信的重叠情况,显著提升了GPU利用率。
性能数据
| Step Time (s) | Per GPU TFLOPs | |
|---|---|---|
| EP Overlap | 24.5 | 348 (+72) |
<small>*仅供技术讨论和参考,性能可能因产品组合不同而异。</small>
下表对比了有无MTP Standalone优化时各阶段的层分配情况:
通过将MTP和loss分离到不同的虚拟阶段,实现了更好的负载均衡。
性能数据
| Step Time (s) | Per GPU TFLOPs | |
|---|---|---|
| MTP Standalone | 23.8 | 359 (+11) |
<small>*仅供技术讨论和参考,性能可能因产品组合不同而异。</small>
通过cuda_graph_scope可以对CUDA图生效的范围进行细粒度控制。
* 可控范围包括:[attn, mlp, moe, moe_router, moe_preprocess]
例如,设置--cuda-graph-scope attn mlp moe_router moe_preprocess可以捕获整个密集层(dense layer)以及MoE层中的attn+router+preprocess部分。
下图左侧是MoE层的流程图,标出了不同部分的scope;右侧是性能分析器(profiler)的截图,显示了被CUDA图捕获(Graphed)的区域。
以下是一组推荐的命令行参数配置,用于实现DeepSeek-V3的最佳性能。
| 参数 | 功能 |
|---|---|
--moe-token-dispatcher-type flex --moe-enable-deepep |
启用DeepEP |
--moe-router-dtype fp32 --moe-permute-fusion --moe-grouped-gemm --moe-router-fusion |
启用MoE相关优化 |
--pipeline-model-parallel-layout "Et*3|(tt)*29m|L" |
使用灵活的PP布局 |
--recompute-granularity selective --recompute-modules mla_up_proj mlp moe_act |
启用细粒度的重计算 |
--no-rope-fusion: false |
启用MLA Rope Fusion |
--cross-entropy-loss-fusion --cross-entropy-fusion-impl native |
启用交叉熵损失函数融合 |
--manual-gc --manual-gc-interval 10 |
启用手动垃圾回收以避免迭代内的意外GC |
--use-precision-aware-optimizer --exp-avg-dtype bf16 --exp-avg-sq-dtype bf16 |
启用BF16优化器状态 |
--overlap-moe-expert-parallel-comm --delay-wgrad-compute |
启用1F1B重叠 |
--fp8-recipe blockwise --fp8-format e4m3 |
启用DeepSeek FP8方案 |
--moe-router-padding-for-fp8 |
启用MoE Router Padding优化 |
--fp8-param-gather |
启用FP8主权重 |
--external-cuda-graph --cuda-graph-scope attn mlp moe_router moe_preprocess |
启用CudaGraph(可选) |
为了方便客户复现我们的性能,我们提供了一个MCore MoE模型库。
下图展示了在Blackwell平台上训练LM3 405B模型时,不同并行策略的性能对比。Megatron-FSDP (M-FSDP) 取得了最高的2020 TFLOPS/GPU。
下图对比了两种分片方式的结构差异。
基线FSDP:重复创建集合通信缓冲区。
Megatron-FSDP:使用持久化的通信缓冲区。
下图展示了Megatron-FSDP中使用预分配双缓冲区的流程。
基线集合通信核心(collective kernels)的缺点:
注册持久化NCCL用户缓冲区的好处:
下图展示了该技术所利用的硬件架构,包括GPU、NVSwitch和IB-Switch。
下图对比了基线反向传播和完全隐藏通信的两种情况。通过将微批次大小加倍(2X micro-batch size),计算时间足以完全覆盖通信时间,从而消除了暴露的通信开销。
Megatron-FSDP 的并行性由 DeviceMesh 定义和管理。
Megatron-FSDP 的分布式状态与5个并行维度进行交互:
DeviceMesh 支持。Megatron-FSDP 解耦了非 EP 模块和 EP 模块的分布式状态:
DeviceMesh。Expert DeviceMesh。Megatron-FSDP 与基于 Megatron 的并行性兼容。
支持 Torch 分布式检查点 (DCP)
在 DeepSeek Proxy 模型上进行检查点重载测试
下图显示,从 Megatron-FSDP 和 3D 并行模式的检查点重新加载后,训练曲线与基线完全一致,证明了检查点加载的正确性和无缝衔接。
Blackwell 平台
下表展示了在 Blackwell 平台上对 DeepSeek-V3 模型的基准测试结果。
启用 Megatron-FSDP 的标志 (flags):
--use-megatron-fsdp--data-parallel-sharding-strategy optim_grads_optim--no-gradient-accumulation-fusion--use-distributed-optimizer--calculate-per-token-loss--init-model-with-meta-device--ckpt-format fsdp_dtensor更高性能的选项:
--grad-reduce-in-bf16--fsdp-double-buffer--use-nccl-ub未来可能的优化方向:
该工作已在 PyTorch Conference 2025 上展示。